The United States Advanced Television Systems Committee (ATSC), Inc., which was formed by member organizations of the Joint Committee on InterSociety Coordination (JCIC), developed a coordinated set of national standards for the development of U.S. domestic television services. These standards including relevant audio encoding/decoding standards are set forth in several documents including Document A/52B entitled “Digital Audio Compression Standard (AC-3, E-AC-3),” Revision B, published Jun. 14, 2005, which is incorporated herein by reference in its entirety. The audio coding algorithm specified in Document A/52B is referred to as “AC-3.” An enhanced version of this algorithm, which is described in Annex E of the document, is referred to as “E-AC-3.” These two algorithms are referred to herein as “AC-3” and the pertinent standards are referred to herein as the “ATSC Standards.”
The A/52B document does not specify very many aspects of algorithm design but instead describes a “bit stream syntax” defining structural and syntactical features of the encoded information that a compliant decoder must be capable of decoding. Many applications that comply with the ATSC Standards will transmit encoded digital audio information as binary data in a serial manner. As a result, the encoded data is often referred to as a bit stream but other arrangements of the data are permissible. For ease of discussion, the term “bit stream” is used herein to refer to an encoded digital audio signal regardless of the format or the recording or transmission technique that is used.
A bit stream that complies with the ATSC Standards is arranged in a series of “synchronization frames.” Each frame is a unit of the bit stream that is capable of being fully decoded into one or more channels of pulse code modulated (PCM) digital audio data. Each frame includes “audio blocks” and frame metadata that is associated with the audio blocks. Each of the audio blocks contain encoded audio data representing digital audio samples for one or more audio channels and block metadata associated with the encoded audio data.
Although details of algorithmic design are not specified in the ATSC Standards, certain algorithmic features have been widely adopted by the manufacturers of professional and consumer decoding equipment. One universal feature of implementation for decoders that can decode enhanced AC-3 bit streams generated by E-AC-3 encoders is an algorithm that decodes all encoded data in a frame for a respective channel before decoding data for another channel. This approach has been used to improve the performance of implementations on single-chip processors having little on-chip memory because some decoding processes require data for a given channel from each of the audio blocks in a frame. By processing the encoded data in channel order, decoding operations can be performed using on-chip memory for a particular channel. The decoded channel data can subsequently be transferred to off-chip memory to free up on-chip resources for the next channel.
A bit stream that complies with the ATSC Standards can be very complex because a large number of variations are possible. A few examples mentioned here only briefly include channel coupling, channel rematrixing, dialog normalization, dynamic range compression, channel downmixing and block-length switching for standard AC-3 bit streams, and multiple independent streams, dependent substreams, spectral extension and adaptive hybrid transformation for enhanced AC-3 bit streams. Details for these features can be obtained from the A/52B document.
By processing each channel independently, the algorithms required for these variations can be simplified. Subsequent complex processes like synthesis filtering can be performed without concern for these variations. Simpler algorithms would seem to provide a benefit in reducing the computational resources needed to process a frame of audio data.
Unfortunately, this approach requires the decoding algorithm to read and examine data in all of the audio blocks twice. Each iteration of reading and examining audio block data in a frame is referred to herein as a “pass” over the audio blocks. The first pass performs extensive calculations to determine the location of the encoded audio data in each block. The second pass performs many of these same calculations as it performs the decoding processes. Both passes require considerable computational resources to calculate the data locations. If the initial pass can be eliminated, it may be possible to reduce the total processing resources needed to decode a frame of audio data.